#!/usr/bin/env ruby
# 自动将目录前缀添加到提交信息之前。
#
# 本例子适用于一个仓库包含多个子项目的情况，每个子项目作为一个子目录存在。在每
# 次提交信息之后，如果改动只涉及一个子目录，则会在提交信息之前增加目录的前缀。
#
# 使用方法，将本文件复制到 `.git/hooks/commit_msg`
#

modified_files = `git diff --name-only --cached`
modified_files = modified_files.split("\n")
modified_dirs = modified_files.map { |file| file.split('/')[0] }.uniq
exit unless modified_dirs.length == 1

modified_dir = modified_dirs[0]
commit_msg_file = ARGV[0]
commit_msg = File.read(commit_msg_file)

unless commit_msg.start_with?(modified_dir + ':')
  commit_msg = modified_dir + ': ' + commit_msg
  File.write(commit_msg_file, commit_msg)
end
